package com.ebei.admin.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.ebei.admin.model.dto.UserDTO;
import com.ebei.admin.model.entity.SysUser;
import com.ebei.common.bean.interceptor.DataScope;
import com.ebei.common.util.Query;
import com.ebei.common.vo.UserVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 用户mapper
 *
 * @author crazypenguin
 * @version 1.0
 * @created 2018/4/17
 */
@Repository
public interface SysUserMapper extends BaseMapper<SysUser> {
    @Override
    default List<SysUser> selectByMap(Map<String, Object> columnMap) {
        return null;
    }

    @Override
    default Integer insert(SysUser entity) {
        return null;
    }

    /**
     * 通过账号查询用户
     * @param userAccount
     * @return
     */
    UserVO selectUserByUserAccount(String userAccount);

    /**
     * 分页查询用户信息（含角色）
     *
     * @param dataScope 数据权限
     * @param query     查询条件
     * @return list
     */
    List selectUserVoPageDataScope(Query query, DataScope dataScope);

    /**
     * 通过手机号查询用户信息（含有角色信息）
     *
     * @param mobile 用户名
     * @return userVo
     */
    UserVO selectUserVoByMobile(String mobile);

    /**
     * 通过openId查询用户信息
     *
     * @param openId openid
     * @return userVo
     */
    UserVO selectUserVoByOpenId(String openId);

    /**
     * 通过ID查询用户信息
     *
     * @param id 用户ID
     * @return userVo
     */
    UserVO selectUserVoById(Integer id);

    /**
     * 根据角色code查询用户
     * @param params
     * @return
     */
    List<Map<String,Object>> findUsersByRoleCondition(Map<String,Object> params);

    /**
     * 根据参数查询
     */
    List<Map<String, Object>> findByParam(Query<UserVO> query, Map<String, Object> condition);

    /**
     * 根据根据岗位id查询
     */
    List<Map<String,Object>> findByPositionId(String positionId);

    /**
     * 新增返回id
     * @param sysUser
     */
    void insertReturnId(SysUser sysUser);

    /**
     * 根据组织id查询用户
     * @param map
     * @return
     */
    List<SysUser> findUserByOrgId(Map<String, Object> map);

    /**
     * 条件筛选用户 设备用
     * @param query
     * @param params
     * @return
     */
    List<Map<String,Object>> getUsersForDevice(Query<Map<String, Object>> query, Map<String, Object> params);

}